import request from '@/config/axios'

// OA付款审批主 VO
export interface PaymentVO {
  id: number // 主键ID
  userId: number // 申请员工ID
  userName: string // 申请员工姓名
  deptId: number // 申请部门ID
  deptName: string // 申请部门名称
  title: string // 费用名称
  expenseType: number // 费用类型
  expenseName: string // 费用名称
  payCompany: string // 付款公司
  payMethod: number // 付款方式
  payDate: Date // 付款日期
  payAmount: number // 付款金额
  receiverName: string // 收款人全称
  receiverAccount: string // 收款人账号
  receiverBank: string // 收款人开户行
  hasInvoice: boolean // 有无发票
  invoiceAmount: number // 发票金额
  remark: string // 备注
  files: string // 附件
  status: number // 审批结果
  processInstanceId: string // 流程实例的编号
  creatorName: string // 创建者
  updaterName: string // 更新者
  // 付款人相关字段
  payerId?: number // 付款人ID
  payerName?: string // 付款人姓名
  // 审批人选择字段
  startUserSelectAssignees?: Record<string, number[]> // 发起人自选审批人
}

// OA付款审批主 API
export const PaymentApi = {
  // 查询OA付款审批主分页
  getPaymentPage: async (params: any) => {
    return await request.get({ url: `/oa/payment/page`, params })
  },

  // 查询OA付款审批主详情
  getPayment: async (id: number) => {
    return await request.get({ url: `/oa/payment/get?id=` + id })
  },

  // 新增OA付款审批主
  createPayment: async (data: PaymentVO) => {
    return await request.post({ url: `/oa/payment/create`, data })
  },

  // 修改OA付款审批主
  updatePayment: async (data: PaymentVO) => {
    return await request.put({ url: `/oa/payment/update`, data })
  },

  // 删除OA付款审批主
  deletePayment: async (id: number) => {
    return await request.delete({ url: `/oa/payment/delete?id=` + id })
  },

  // 导出OA付款审批主 Excel
  exportPayment: async (params) => {
    return await request.download({ url: `/oa/payment/export-excel`, params })
  },

  // 更新支付状态
  updatePayStatus: async (id: number, payStatus: number) => {
    return await request.put({ url: `/oa/payment/update-pay-status`, params: { id, payStatus } })
  },

  // 分页获取本部门付款申请
  getDeptPaymentPage: async (params: any) => {
    return await request.get({ url: `/oa/payment/dept-page`, params })
  },

  // 导出本部门付款申请 Excel
  exportDeptPayment: async (params: any) => {
    return await request.download({ url: `/oa/payment/dept-export-excel`, params })
  },

  // 暂存付款申请单（草稿状态）
  saveDraft: async (data: PaymentVO) => {
    return await request.post({ url: `/oa/payment/save-draft`, data })
  },

  // 修改暂存的付款申请单
  updateDraft: async (data: PaymentVO) => {
    return await request.put({ url: `/oa/payment/update-draft`, data })
  }
}
